package user;


import book.BookList;
import operation.IOperation;

public abstract class User {
    //封装name
    private String name;

    //不用private,不然在子类中访问iOperations并初始化很麻烦
    protected IOperation[] iOperations;//只是定义了接口数组但没有初始化，内存也未分配



    //1、需要管理员和普通用户相对应的两个菜单，所以设置成继承，进而可以使用多态
    //2、父类中的menu不需要任何操作，所以可以改为抽象类
    public abstract int menu();

    public void doOperations(int choice, BookList bookList) {
        this.iOperations[choice].work(bookList);//先得到choice下标的操作对象，再调用work方法
    }



    //构造方法初始化name
    public User(String name) {
        this.name=name;
    }

    //获取name
    public String getName() {
        return name;
    }
}
